Grid computing refers to a collection of computing resources residing in multiple locations in a distributed system where heterogeneous computing resources are geographically dispersed. In a grid computing environment, a computing job may be scheduled for execution using certain resources in the grid. A user may specify the job requirements in terms of number, types and amount of resources (e.g., CPUs, memory, storage, etc.) needed to successfully perform the job.
Typically, job requirements are specified using a specific language known as the Job Description Language (JDL). JDL provides a user with the ability to define a job description that includes an exact specification for job resources. JDL, however, lacks context for defining alternative options, if the exact resources are not available for the job. In other words, if the job description for the required resources does not match the currently available resources, the job request will be either denied or delayed.
Thus, a job may be rejected or delayed even if a user would have been agreeable to the job being started with a different allocation of resources or at a different time. For example, a user may submit a job description to request five CPUs for a job, where only three CPUs are available. As an alternative to waiting, the user may accept three CPUs. But the user has no way to define this alternative in the job description and as a result the job will be rejected or delayed until five CPUs become available.